#include<bits/stdc++.h>
#define ll long long
using namespace std;

struct Node
{
    int pos,val;
    Node(int pos,int val):pos(pos),val(val){}
    bool operator<(const Node &tp)const
    {
        if(val!=tp.val)
            return val>tp.val;
        return pos<tp.pos;
    }
};

int _,n,q;
int sx[200005],sy[100005],tx[100005],ty[100005];
int bl[100005],br[100005],rr[100005];
int num[200005],cnt;
int nx[200005],xx;
int ny[200005],yy;
ll ans[100005];
int tag[2000005],ss[2000005],ns[2000005];
vector<int> adj[100005],bdj[100005];
set<Node> s;

inline int lc(int k){return k<<1;}

inline int rc(int k){return k<<1|1;}

inline void update(int k)
{
    if(tag[k])
        ss[k]=ns[k];
    else
        ss[k]=ss[lc(k)]+ss[rc(k)];
}

inline void build(int k,int l,int r)
{
    if(l==r)
    {
        ns[k]=ny[r+1]-ny[l];
        return;
    }

    int mid=(l+r)>>1;
    build(lc(k),l,mid);
    build(rc(k),mid+1,r);

    ns[k]=ns[lc(k)]+ns[rc(k)];
}

inline void add(int k,int l,int r,int ql,int qr,int val)
{
    if(ql<=l&&r<=qr)
    {
        if(val==1)
        {
            tag[k]++;
            if(tag[k]==1)
                ss[k]=ns[k];
        }
        else
        {
            tag[k]--;
            if(tag[k]==0)
                ss[k]=ss[lc(k)]+ss[rc(k)];
        }

        return;
    }

    int mid=(l+r)>>1;

    if(ql<=mid)
        add(lc(k),l,mid,ql,qr,val);
    if(mid<qr)
        add(rc(k),mid+1,r,ql,qr,val);

    update(k);
}

inline bool cmp(int x,int y){return sx[x]<sx[y];}

inline ll sol()
{
    ans[0]=0;

    sort(num+1,num+cnt+1,cmp);

    for(int i=1;i<=cnt;i++)
    {
        int id=num[i];

        if(sx[id]!=sx[num[i-1]])
            ans[0]+=1LL*ss[1]*(nx[sx[id]]-nx[sx[num[i-1]]]);

        if(id<=n)
            add(1,1,yy-1,sy[id],ty[id]-1,1);
        else
            add(1,1,yy-1,sy[id-n],ty[id-n]-1,0);
    }

    return ans[0];
}

int main()
{
    freopen("dierti.in","r",stdin);
    freopen("dierti.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    
    cin>>_>>n>>q;

    for(int i=1;i<=n;i++)
    {
        cin>>sx[i]>>sy[i]>>tx[i]>>ty[i];
        nx[++xx]=sx[i],nx[++xx]=tx[i];
        ny[++yy]=sy[i],ny[++yy]=ty[i];
    }

    sort(nx+1,nx+xx+1);
    xx=unique(nx+1,nx+xx+1)-nx-1;

    sort(ny+1,ny+yy+1);
    yy=unique(ny+1,ny+yy+1)-ny-1;

    for(int i=1;i<=n;i++)
    {
        sx[i]=lower_bound(nx+1,nx+xx+1,sx[i])-nx;
        sy[i]=lower_bound(ny+1,ny+yy+1,sy[i])-ny;
        tx[i]=lower_bound(nx+1,nx+xx+1,tx[i])-nx;
        ty[i]=lower_bound(ny+1,ny+yy+1,ty[i])-ny;
        sx[i+n]=tx[i];
    }

    build(1,1,yy-1);

    for(int i=1;i<=n;i++)
    {
        bl[i]=0,br[i]=n+1;
        
        for(int j=i-1;j;j--)
        {
            if(sx[j]<=sx[i]&&sy[j]<=sy[i]&&tx[i]<=tx[j]&&ty[i]<=ty[j])
            {
                bl[i]=j;
                break;
            }
        }

        for(int j=i+1;j<=n;j++)
        {
            if(sx[j]<=sx[i]&&sy[j]<=sy[i]&&tx[i]<=tx[j]&&ty[i]<=ty[j])
            {
                br[i]=j;
                break;
            }
        }

        adj[bl[i]+1].push_back(i);
    }

    for(int i=1;i<=q;i++)
    {
        cin>>_>>rr[i];
        bdj[_].push_back(i);
    }

    for(int i=1;i<=n;i++)
    {
        for(int id:adj[i])
            s.insert(Node(id,br[id]));

        for(int id:bdj[i])
        {
            cnt=0;

            for(Node tp:s)
            {
                if(tp.val<=rr[id])
                    break;

                if(tp.pos>rr[id])
                    continue;

                num[++cnt]=tp.pos;
                num[++cnt]=tp.pos+n;
            }

            ans[id]=sol();
        }

        s.erase(Node(i,br[i]));
    }

    for(int i=1;i<=q;i++)
        cout<<ans[i]<<'\n';

    return 0;
}